package edu.java基础;

public class F_运算符 {
    /*算术运算符
    * +：
    * -：
    * *：
    * /:整数相除，结果只能得到整数，想要得到带小数的结果，必须加入小数（浮点类型）的运算
    * %（取模）：取余数
    * */
    public static void main(String[] args) {
        //除法
        System.out.println(10/3);  //3
        System.out.println(10/3.0);  //3.3333333333333335
        System.out.println(10.0/3.0);//3.3333333333333335

        //取模(取余数)
        System.out.println(5%2);  //1


        /*字符的“+”操作
        *ASSCII表：‘a’---97  'A'---65  '0'---48

        * */
        int a = 1;
        char b = 'a';  // 97 char类型在运算时转化成int,是该asscii表对应的值
        System.out.println(a+b);   //98

        /*字符串的“+”操作
        * 字符串可以使用+和任意数据类型拼接（连接）
        */
        System.out.println("nihao"+666);  //nihao666
        System.out.println(1+99+"nihao"); //100nihao
        System.out.println("5+5="+5+5);  //5+5=55 从左到右逐个执行

       /* 自增自减运算符 a++,a--，++a,--a
       ++,--只能操作变量，不能操作常量
       * 单独使用时：++在前在后没区别 int a=10; a++;
       * 参与操作时：++在前：先自增，再参与操作
       *            int a=10; int b=++a;  -->a=11,b=11
       *           ++在后：先参与操作再自增
       *            int a=10; int b=a++;  -->a=11,b=10
       */
        int num = 123;
        System.out.println(num++); //123
        System.out.println(num);  //124

        /*赋值运算符
        * =，  拓展赋值运算符+=，-=，/=，%=
        * +=："a+=10"=="a=a+10"
        */
        short s=1;
        //s=s+1 错误，大转小 --》s=(short)(s+1)
        s+=1;   //不会出错，拓展赋值运算符自带强转
                //相当于s+=1  ->s=(short)(s+1)
        System.out.println(s);

        /*比较运算符
        * ==，!=,>,>=,<,<=
        * */
        System.out.println(10>20);  //false

        /*逻辑运算符
        &（与）: 并且 ,遇false则false,只有两边同为true,结果才为true
        true & true  -->true
        |（或）：或者 ,遇true则true,只有两边同为false,结果才是false
        true | false  -->true
        !（非）：取反
        !true -->false
        ^(异或)：两边相同则为true，否则为false
        true^true  -->false     true^false   -->true
        * 5<x<15不能用，要转化为--》x>5&x<15;
        * */
        int x=10;
        System.out.println(x > 5 & x< 15);  //true得到的只是一个布尔类型的值


        /*逻辑运算符 &&，||
        * &&（短路与）：符号左边有false,右边就不再执行了
        *             而&无论左边是true还是false,右边都执行
        * ||（短路或）：
        * */
        int x1=3;
        int y1=4;
        //false&true
        System.out.println(++x1 > 4 && y1--< 5);
        System.out.println("x1="+x1);  //4
        System.out.println("y1="+y1);  //
        /*三元运算符
        *关系表达式？表达式1:表达式2;  //?为true就取表达式1的值
        * */
        int a1=10;
        int b1=20;
        int max = a > b ? a1 : b1;  //三元
        System.out.println(max);
        //三个和尚找身高
        int height1 = 150;
        int height2 = 210;
        int height3 = 165;
        int tempHigh = (height1 > height2) ? height1 : height2;
        int high = (tempHigh > height3) ? tempHigh : height3;
        //也可(height1 > height2) ? height1 : height2 >height3 ? tempHigh : height3;
        System.out.println("最大值是"+high);
    }
}
